/**
 * @(#)Tools.java
 * 
 * @Version: 1
 * @JDK: jdk 1.6.0.XXX
 * @Module: MBA
 */
/*- 				History
 **********************************************
 *  ID      DATE           PERSON       REASON
 *  1     2013-03-04     Yongkai.Yu    Created
 **********************************************
 */

package com.mba.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.TextView;

import com.mba.activity.R;
import com.mba.bean.ContentInfo;
import com.mba.bean.UserInfo;

/**
 */
public class Tools extends Constants {
	
    private static final String TAG = "Tools";

    private static Tools instance = null;
    
    ArrayList<ContentInfo> contentList = null;;
    UserInfo user = null;

    private Tools() {
    }

    public static Tools getInstance() {
        if (instance == null) {
            instance = new Tools();
        }
        return instance;
    }

    /**
     * 进行网络检测
     */
    public static boolean checkNetwork(final Activity context) {
        if (!Tools.isNetworkAvailable(context)) {
            TextView dialog = new TextView(context);
            dialog.setText(R.string.networkfaile);
            new AlertDialog.Builder(context)
                    .setIcon(R.drawable.not)
                    .setTitle(
                            context.getResources().getString(
                                    R.string.dialogTitle))
                    .setView(dialog)
                    .setPositiveButton(
                            context.getResources().getString(R.string.ok),
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int whichButton) {
                                    // 设置完毕会返回当前应用
                                    context.startActivityForResult(
                                            new Intent(
                                                    android.provider.Settings.ACTION_WIRELESS_SETTINGS),
                                            0);
                                }
                            }).create().show();

        }
        return true;
    }

    /**
     * 检测网络是否可用
     * 
     * @param context
     *            上下文
     * @return true 表示有网络连接 false表示没有可用网络连接
     */
    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) {
            return false;
        } else {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
                for (int i = 0; i < info.length; i++) {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        }
        return false;
    }

    /**
     * 使用当前时间戳拼接一个唯一的文件名
     * 
     * @param format
     * @return
     */
    public static String getFileName() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss_SS");
        return format.format(new Timestamp(System.currentTimeMillis()));
    }

    /**
     * 获取照相机使用的目录
     * 
     * @return
     */
    public static String getCamerPath() {
        return Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DCIM).toString();
    }

    /**
     * 获取SD卡中最新图片路径
     * 
     * @return
     */
    public static String getLatestImage(Activity activity) {
        String latestImage = null;
        String[] items = { MediaStore.Images.Media._ID,
                MediaStore.Images.Media.DATA };
        Cursor cursor = activity.managedQuery(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, items, null,
                null, MediaStore.Images.Media._ID + " desc");

        if (cursor != null && cursor.getCount() > 0) {
            cursor.moveToFirst();
            for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor
                    .moveToNext()) {
                latestImage = cursor.getString(1);
                break;
            }
        }

        return latestImage;
    }

    /**
     * 根据路径获取适应屏幕大小的Bitmap
     * 
     * @param context
     * @param filePath
     * @param maxWidth
     * @return
     */
    public static Bitmap getScaleBitmap(Context context, String filePath) {
        BitmapFactory.Options opts = new BitmapFactory.Options();
        opts.inSampleSize = 4;

        return BitmapFactory.decodeFile(filePath, opts);
    }

    /**
     * 根据Uri获得图片的绝对路径
     * 
     * @param uri
     * @return String[]{imgNo,imgPath,imgName,imgSize}
     */
    public static String[] getAbsoluteImagePath(Activity activity, Uri uri) {

        Cursor cursor = activity.getContentResolver().query(uri, null, null,
                null, null);
        cursor.moveToFirst();
        String imgNo = cursor.getString(0); // 图片编号
        String imgPath = cursor.getString(1); // 图片文件路径
        String imgSize = cursor.getString(2); // 图片大小
        String imgName = cursor.getString(3); // 图片文件名
        return new String[] { imgNo, imgPath, imgName, imgSize };
    }

    /**
     * 获取得到用户信息
     * 
     * @param user
     * @return user
     */
    public UserInfo getUserHead_Name(UserInfo user) {
        
        return null;
    }

   
    /**
     * 获得主页数据
     * 
     * @param flag
     *            TODO
     */
    public ArrayList<ContentInfo> loadHomeDemoData(int flag,String str) {
        
    	if (contentList == null) {
            // 创建存储每条微博的集合
            contentList = new ArrayList<ContentInfo>();
        }
    	
    	List textList = new ArrayList();
    	//textList.add("世纪公园找人一起吃饭打球,晚饭后一起去中学操场跑步");
    	textList.add(str);
    	textList.add(str);
    	textList.add(str);
    	textList.add("出国转让3门冰箱电脑板微波炉电视机空调洗衣机家具");
    	textList.add("9成新海尔全自动洗衣机29寸高清纯平长虹电视机出售");
    	textList.add("张江唐镇川沙转让iPad1 16G-WiFi 国行 无拆无修 张江唐镇川沙转让16Gipad1，无修无拆,自己用的很仔细，买来马上贴了膜套了保护套，所以机器成色很新，无划痕。屏幕完美，无亮点无坏点。没摔过碰过，更没修过拆过，可以查保修记录。");
    	textList.add("全新凤凰双碟刹21变速山地车转让,车子是全新的，有意短信联系");
    	textList.add("龙阳路上下班拼车,为了方便在龙阳路张江等地方上下班的人，本人有大巴士，有意者可拼车，具体电话联系！途径多地，全程高速！时间为一个小时左右");
    	textList.add("诚意转黑色4S,过年亲戚送给老爸的,但不会用,还是全新的");
    	textList.add("低价转让95新卧室实木五件套,沙发,衣柜,床等家具");
    	
    	for(int i=1;i<25;i++){
    		
    		// 创建一个对象存储每条微博数据
            ContentInfo contentInfo = new ContentInfo();
            
            // 数据设置
            contentInfo.setId(""+i);
            contentInfo.setUserId(""+i);
            contentInfo.setUserName("余永凯");
            contentInfo.setTime("2013-03-04 22:34");
            contentInfo.setText((String)textList.get(i%6));
            contentInfo.setHaveImage(false);
            
            // 将单条微博数据设置到集合中
            contentList.add(contentInfo);
    		
    		
    	}
    	
    	
        
        return contentList;

    }

    
    /**
     * 获得具体一条微博信息
     */
    public JSONObject loadContentData(String weiboId) {
       
        return null;

    }

    /**
     * 从流中获得服务器返回的字符串数据
     * 
     * @param response
     * @return String
     * @throws IOException
     */
    private String getData(HttpResponse response) throws IOException {
        InputStream is = response.getEntity().getContent();
        Reader reader = new BufferedReader(new InputStreamReader(is), 4000);
        StringBuilder buffer = new StringBuilder((int) response.getEntity()
                .getContentLength());
        try {
            char[] tmp = new char[1024];
            int l;
            while ((l = reader.read(tmp)) != -1) {
                buffer.append(tmp, 0, l);
            }
        } finally {
            reader.close();
        }
        return buffer.toString();
    }

    /**
     * 获得微博转发和评论数量
     * 
     * @param weiboId
     */
    public JSONArray getWeiboCount(String weiboId) {
        
        return null;
    }

    /**
     * 
     * @param params
     * @param flag
     *            1 txt 2txt_image
     * @return
     */
    public boolean writerWeibo(List<BasicNameValuePair> params, int flag) {
       
        return true;
    }

    /**
     * 根据flag 返回需要获取的服务url
     * @param flag
     * @return
     */
    public String getURL(int flag) {
       
        return "";
    }

}
